import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { relativeTime } from '@/utils/date-time'

// 引入Vant所有的组件
// 在vant这模块中如下两种导出模块的方式同时存在:
// export default  默认导出
// export {Lazyload}  普通导出
//
// 在导入的时，XXX ---> Vant
//            Lazyload 就是 普通导出 Lazyload
// import Vant, { Lazyload } from 'vant'

// 按需引入在项目中用到组件
import {
  Stepper,
  uploader,
  DatetimePicker,
  Tabbar,
  TabbarItem,
  Form,
  Field,
  Button,
  NavBar,
  Toast,
  CheckboxGroup,
  Checkbox,
  Tabs,
  Tab,
  List,
  Lazyload,
  CellGroup,
  Cell,
  Icon,
  Grid,
  GridItem,
  Popup,
  Sidebar,
  SidebarItem,
  Row,
  Col,
  Tag,
  Image,
  PullRefresh,
  ActionSheet,
  Dialog,
  Search,
  Loading,
  Divider,
  Picker,
  Radio,
  RadioGroup,
  Calendar,
  Swipe,
  SwipeItem,
  Pagination
} from 'vant'

// 用它的样式
import 'vant/lib/index.css'

// 它会根据的手机尺寸来调整rem的基准值：html标签上的font-size。
import 'amfe-flexible'
import './styles/index.less'
import Router from 'vue-router'
// 使用懒加载
// Vue.use(Lazyload)

// 挂载事件总线
// prototype是构造器的原型对象。
// Vue是构造器。
// 给Vue这个构造器的原型上添加一个属性：
//     名为$eventBus(名字可以更改)
//     值为new Vue()
import * as echarts from 'echarts'

const originalPush = Router.prototype.push
Router.prototype.push = function push (location) {
  return originalPush.call(this, location).catch(err => err)
}

// 用一下组件

Vue.use(Stepper)
Vue.use(uploader)
Vue.use(Checkbox)
Vue.use(CheckboxGroup)
Vue.use(Pagination)
Vue.use(Swipe)
Vue.use(SwipeItem)
Vue.use(DatetimePicker)
Vue.use(Sidebar)
Vue.use(SidebarItem)
Vue.use(Calendar)
Vue.use(RadioGroup)
Vue.use(Radio)
Vue.use(Picker)
Vue.use(Tabbar)
Vue.use(TabbarItem)
Vue.use(Form)
Vue.use(Field)
Vue.use(Button)
Vue.use(NavBar)
Vue.use(Toast)
Vue.use(Tabs)
Vue.use(Tab)
Vue.use(List)
Vue.use(Lazyload)
Vue.use(CellGroup)
Vue.use(Cell)
Vue.use(Icon)
Vue.use(Grid)
Vue.use(GridItem)
Vue.use(Popup)
Vue.use(Row)
Vue.use(Col)
Vue.use(Tag)
Vue.use(Image)
Vue.use(PullRefresh)
Vue.use(ActionSheet)
Vue.use(Dialog)
Vue.use(Search)
Vue.use(DatetimePicker)
Vue.use(Loading)
Vue.use(Divider)
Vue.prototype.$echarts = echarts

//! 没看到这里注册了 我再utils里注册了 哪里用就引入 所以mainjs挂载这里给你注释了
// 则在所有组件内部，可以通过this.$eventBus来访问这个事件总线
// Vue.prototype.$eventBus = new Vue()

// 挂在一个baseUrl路径 返回的文件路径没有前缀就在全局这里使用
Vue.prototype.$baseUrl = 'http://www.anticinv.com'

// 定义一个全局过滤器
// relativeTime是在/utils/date-time.js中定义的
Vue.filter('relativeTime', relativeTime)

Vue.config.productionTip = false
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
